/*
 * 练习10：找到指定 吸血鬼数字
 * 思考：这东西看了我大半天，还是对"吸血鬼数"不甚了然，而且在看官方答案的时候，
 * 思考：也对他的排列组合不甚理解，而且测试运行的时候，还会有小Bug出现(重复打印了一组数)。
 * 思考：后来一想，算了，仅多把所有结果都列出来(笨的排列组合方式)，然后可以通过测试结果反过来
 * 思考：修改排列组合的不当之处。
 * 结语：第四章:流程控制执行 的练习到此结束。
 */
package chapter4_ControllingExecution;
import publicLibs.p;

public class E10_VampireNumbers {
		static int a(int i) {
			return i/1000;
		}
		static int b(int i) {
			return (i%1000)/100;
		}
		static int c(int i) {
			return ((i%1000)%100)/10;
		}
		static int d(int i) {
			return ((i%1000)%100)%10;
		}
		static int com(int i, int j) {
			return (i * 10) + j;
		}
		static void productTest (int i, int m, int n) {
			if(m * n == i) System.out.println(i + " = " + m + " * " + n);
		}	
	public static void main(String[] args) {		
		for(int i = 1001; i < 9999; i++) {			
			productTest(i, com(a(i), b(i)), com(c(i), d(i)));
			productTest(i, com(a(i), b(i)), com(d(i), c(i)));
			productTest(i, com(a(i), c(i)), com(b(i), d(i)));
			productTest(i, com(a(i), c(i)), com(d(i), b(i)));
			productTest(i, com(a(i), d(i)), com(b(i), c(i)));
			productTest(i, com(a(i), d(i)), com(c(i), b(i)));
			productTest(i, com(b(i), a(i)), com(c(i), d(i)));
			productTest(i, com(b(i), a(i)), com(d(i), c(i)));
			productTest(i, com(b(i), c(i)), com(d(i), a(i)));
			productTest(i, com(b(i), d(i)), com(c(i), a(i)));
			productTest(i, com(c(i), a(i)), com(d(i), b(i)));
			productTest(i, com(c(i), b(i)), com(d(i), a(i)));
		}			
	} 
}